package
{
	import flash.display.*;
	
	/**
	 * Case plein de map (obstacle), associée au Clip CasePleine
	 * @author anemoff
	 */
	public class CasePleine extends Case
	{
		// Types de mur
		public static const MUR_COIN_SUP_GAUCHE:uint = 0;
		public static const MUR_COIN_SUP_DROIT:uint = 1;
		public static const MUR_COIN_INF_GAUCHE:uint = 2;
		public static const MUR_COIN_INF_DROIT:uint = 3;
		public static const MUR_VERTICAL:uint = 4;
		public static const MUR_HORIZONTAL:uint = 5;
		public static const MUR_BLOC:uint = 6;
		
		// Couleurs (en hexa)
		public var couleurMur:uint = 0x0000ff;
		public var couleurFond:uint = 0x000000;
		
		private var typeMur:uint;
		
		public function CasePleine(ligne:uint, col:uint)
		{
			super(CASE_MUR, ligne, col);
			this.bloque = true;
			typeMur = MUR_BLOC;
		}
		
		public function setTypeMur(type:uint):void
		{
			typeMur = type;
			dessiner();
		}
		
		public function getTypeMur():uint
		{
			return typeMur;
		}
		
		private function dessiner():void
		{
			// Effacer le contenu
			graphics.clear();
			
			// Fond de la case
			//graphics.lineStyle(null, 0);
			graphics.beginFill(couleurFond);
			graphics.drawRect(0, 0, Case.LARGEUR, Case.HAUTEUR);
			
			// Style pour le tracé des murs
			graphics.endFill();
			graphics.lineStyle(2, couleurMur, 1, false, "normal", CapsStyle.NONE);
			
			switch (typeMur)
			{
				case MUR_VERTICAL:
					graphics.moveTo(Case.LARGEUR / 2, 0);
					graphics.lineTo(Case.LARGEUR / 2, Case.HAUTEUR);
					break;
				
				case MUR_HORIZONTAL:
					graphics.moveTo(0, Case.HAUTEUR / 2);
					graphics.lineTo(Case.LARGEUR, Case.HAUTEUR / 2);
					break;
				
				case MUR_COIN_SUP_DROIT:
					//dessinerArc(0, HAUTEUR, LARGEUR / 2, 0, Math.PI / 2, 1);
					graphics.beginFill(0x00ff00);
					graphics.drawRect(0, 0, Case.LARGEUR, Case.HAUTEUR);
					break;
				
				case MUR_COIN_SUP_GAUCHE:
					//dessinerArc(LARGEUR, HAUTEUR, LARGEUR / 2, Math.PI / 2, Math.PI, 1);
					graphics.beginFill(0xff0000);
					graphics.drawRect(0, 0, Case.LARGEUR, Case.HAUTEUR);
					break;
				
				case MUR_COIN_INF_DROIT:
					//dessinerArc(0, 0, LARGEUR / 2, -Math.PI / 2, 0, 1);
					graphics.beginFill(0xffff00);
					graphics.drawRect(0, 0, Case.LARGEUR, Case.HAUTEUR);
					break;
				
				case MUR_COIN_INF_GAUCHE:
					//dessinerArc(LARGEUR, 0, LARGEUR / 2, -Math.PI, 0, 1);
					graphics.beginFill(0x00ffff);
					graphics.drawRect(0, 0, Case.LARGEUR, Case.HAUTEUR);
					break;
				
				case MUR_BLOC:
				default:
					graphics.beginFill(couleurMur);
					graphics.drawRect(0, 0, Case.LARGEUR, Case.HAUTEUR);
					break;
			}
		} // dessiner
		
		public function dessinerArc(centreX:int, centreY:int, rayon:int, angleDebut:int, angleFin:int, precision:int):void
		{
			var diffAngle:int = angleFin - angleDebut;
			var pas:int = Math.round(diffAngle * precision);
			var angle:int = angleDebut;
			var px:int = centreX + rayon * Math.cos(angle);
			var py:int = centreY + rayon * Math.sin(angle);
			
			graphics.moveTo(px, py);
			for (var i:int = 1; i <= pas; i++)
			{
				angle = angleDebut + diffAngle / pas * i;
				graphics.lineTo(centreX + rayon * Math.cos(angle), centreY + rayon * Math.sin(angle));
			}
		}
	
	}

}